object Main extends App {

  // addOne 函数使用 map 高阶函数将每个元素加 1
  def addOne(list: List[Int]): List[Int] = {
    list.map(_ + 1)
  }

  // filterEven 函数使用 filter 高阶函数筛选出偶数
  def filterEven(list: List[Int]): List[Int] = {
    list.filter(_ % 2 == 0)
  }

  // mapReduce 函数首先使用 map 将列表中的每个元素应用于映射函数，然后使用 reduceLeft 应用归约函数
  def mapReduce(list: List[Int], mapFunc: Int => Int, reduceFunc: (Int, Int) => Int): Int = {
    list.map(mapFunc).reduceLeft(reduceFunc)
  }

  // 测试代码
  val numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

  // 测试 addOne 函数
  val numbersPlusOne = addOne(numbers)
  println("Add One Result: " + numbersPlusOne)

  // 测试 filterEven 函数
  val evenNumbers = filterEven(numbers)
  println("Even Numbers Result: " + evenNumbers)

  // 测试 mapReduce 函数，计算列表中所有元素的和
  val sum = mapReduce(numbers, x => x, (x, y) => x + y)
  println("Sum of numbers: " + sum)
}
